package com.candy.test;

import com.candy.dao.UserInfoMapper;
import com.candy.pojo.UserInfo;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class DBDriver {
    public static void main(String[] args) {
        test06();
    }
    public static void test06() {
        try {
            String resource = "mybatis-config.xml";
//            读取配置文件
            InputStream inputStream = Resources.getResourceAsStream(resource);
//            创建SqlSessionFactory实例
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//           SqlSession相当于JDBC中的statement，用来执行具体的增删改查的
            SqlSession session = sqlSessionFactory.openSession();
//获取映射器类
            UserInfoMapper mapper=  session.getMapper(UserInfoMapper.class);
//          指定具体的操作时，直接调用方法就可以了

            int num=mapper.deleteUserById(6);
            System.out.println(num);
            session.commit();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void test05() {
        try {
            String resource = "mybatis-config.xml";
//            读取配置文件
            InputStream inputStream = Resources.getResourceAsStream(resource);
//            创建SqlSessionFactory实例
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//           SqlSession相当于JDBC中的statement，用来执行具体的增删改查的
            SqlSession session = sqlSessionFactory.openSession();
//获取映射器类
            UserInfoMapper mapper=  session.getMapper(UserInfoMapper.class);
//          指定具体的操作时，直接调用方法就可以了
            UserInfo user=new UserInfo();

            user.setUsertel("888888");
            user.setId(4);
            int num=mapper.updateUser(user);
            System.out.println(num);
            session.commit();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public static void test04() {
        try {
            String resource = "mybatis-config.xml";
//            读取配置文件
            InputStream inputStream = Resources.getResourceAsStream(resource);
//            创建SqlSessionFactory实例
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//           SqlSession相当于JDBC中的statement，用来执行具体的增删改查的
            SqlSession session = sqlSessionFactory.openSession();
//获取映射器类
            UserInfoMapper mapper=  session.getMapper(UserInfoMapper.class);
//          指定具体的操作时，直接调用方法就可以了
            UserInfo user=new UserInfo();
            user.setUsername("张三");
            user.setUserpwd("123456");
            user.setUseraddress("大连");
            user.setUsertel("13698745698");
            int num=mapper.insertUser(user);
            System.out.println(num);
            session.commit();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }



    public static void test03() {
        try {
            String resource = "mybatis-config.xml";
//            读取配置文件
            InputStream inputStream = Resources.getResourceAsStream(resource);
//            创建SqlSessionFactory实例
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//           SqlSession相当于JDBC中的statement，用来执行具体的增删改查的
            SqlSession session = sqlSessionFactory.openSession();
//获取映射器类
            UserInfoMapper mapper=  session.getMapper(UserInfoMapper.class);
//          指定具体的操作时，直接调用方法就可以了
            List<UserInfo> userInfoes= mapper.selectAll();
            for (UserInfo user:userInfoes
                 ) {
                System.out.println(user);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }



    public static void test02() {
        try {
            String resource = "mybatis-config.xml";
//            读取配置文件
            InputStream inputStream = Resources.getResourceAsStream(resource);
//            创建SqlSessionFactory实例
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//           SqlSession相当于JDBC中的statement，用来执行具体的增删改查的
            SqlSession session = sqlSessionFactory.openSession();
//获取映射器类
          UserInfoMapper mapper=  session.getMapper(UserInfoMapper.class);
//          指定具体的操作时，直接调用方法就可以了
           UserInfo userInfo= mapper.selectById(1);
            System.out.println(userInfo);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void test01() {

        try {
            String resource = "mybatis-config.xml";
//            读取配置文件
            InputStream inputStream = Resources.getResourceAsStream(resource);
//            创建SqlSessionFactory实例
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//           SqlSession相当于JDBC中的statement，用来执行具体的增删改查的
            SqlSession session = sqlSessionFactory.openSession();
//            第一个参数是指定要执行的sql语句对应的namespace属性+id值
//            第二个参数传入需要指定的参数
           UserInfo userInfo= session.selectOne("com.candy.dao.UserInfoMapper.selectById",1);
            System.out.println(userInfo);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
